# Принципы структурного программирования

Становление и развитие структурного программирования связано с именем Эдсгера Дейкстры.
* Принцип 1. Следует отказаться от использования оператора безусловного перехода goto.
* Принцип 2. Любая программа строится из трёх базовых управляющих конструкций: последовательность, ветвление, цикл.
* Принцип 3. В программе базовые управляющие конструкции могут быть вложены друг в друга произвольным образом. Никаких других средств управления последовательностью выполнения операций не предусматривается.
* Принцип 4. Повторяющиеся фрагменты программы можно оформить в виде подпрограмм (процедур и функций). Таким же образом (в виде подпрограмм) можно оформить логически целостные фрагменты программы, даже если они не повторяются.
* Принцип 5. Каждую логически законченную группу инструкций следует оформить как блок. Блоки являются основой структурного программирования.
* Принцип 6. Все перечисленные конструкции должны иметь один вход и один выход.
* Принцип 7. Разработка программы ведётся пошагово, методом «сверху вниз» (top-down method).

Следствия и дополнения вышеизложенных принципов:

1. Запрет на использование глобальных переменных
2. Не более одного выхода из функции. Исключение составляет предварительная проверка аргументов функции.
3. Не более одного выхода из цикла - это может быть как условие, так и ключевое слово break
4. Вложенность любых блоков не должна превышать 4
5. Размер функций ограничен по строкам и составляет 40-50 строк

![goto](../misc/eng/images/GOTO.png)
